// pages/a/a.js
var Ajax = require('./Ajax.js')
var utils = require('./util.js');
// var { getParamp, getParamp: { provinces, citys, countys }, provnameArr } = cityArr;
export let AreaPicker = {
  // onAreaCommit(locationList){} 需要实现的方法
  showAreaSelector() { //显示地址选择器
    if (!this.data._area_areaList) {
      this._area_init();
    }
    this.setData({
      _area_showSelector: true
    })
  },
  _area_hideAreaSelector() { //隐藏地址选择器
    this.setData({
      _area_showSelector: false
    })
  },
  _iscatchfalse() {
    return false;
  },
  init(flag = false, indexarr=[]) {
    this.setData({
      _area_level: 3, //总共有几级地址
      _area_selectAllArea: true, //是否要求用户选到最后一级 
      _area_showSelector: false, //是否展示控件
      _area_activeTab: 0, //激活的选项卡
      _area_checkedIndexArr: [], //选中的地址下标
      _area_areaList: [null, null, null], //省市区街道二维数组
    }, () => {
      utils.showLoading();
      this.provincesinit(1, '', 0, flag, indexarr)
    })
  },
  provincesinit(regionType = 1, parentId = '', level = 0, flag, indexarr = []) {
    var {
      _area_activeTab,
      _area_areaList,
      _area_checkedIndexArr
    } = this.data;
    _area_areaList[level] = [];
    Ajax.post('getAreaList',{
      regionType: regionType,
      parentId: parentId
    }).then((d) => {
      utils.hideLoading();
      if (d.status == 200 && d.data) {
        _area_areaList[level] = d.data || [];
        _area_areaList[level].length == 0 ? _area_areaList[level] = null : _area_areaList[level];
        _area_activeTab = (_area_areaList[level] || []).length == 0 ? _area_activeTab : level;
        (_area_areaList[level] || []).length == 0 && this._area_commitArea();
        if (flag) {
          (_area_areaList[level]||[]).forEach((item, index) => {
            if (item.regionId == indexarr[level]) {
              _area_checkedIndexArr[level] = index
              this.setData({
                _area_checkedIndexArr
              })
            }
          })
        }
        this.setData({
          _area_areaList,
        }, () => {
          this.setData({
            _area_activeTab
          })
        })
      } else {
        utils.showtoast(d.data)
      }
      // console.log(d)
    }).catch((e) => {
      utils.hideLoading();
      utils.showtoast('网络错误，数据加载失败')
      console.log(e)
    })
  },
  editor(editors = [], indexarr = []) { //editors需要请求的市，区县，indexarr修改的省市区默认编号(ps根据编号定位)
    editors.forEach((item, index) => {
      utils.hideLoading();
      this.provincesinit(index + 2, item, index + 1, true, indexarr)
    })
  },
  _area_init() { //初始化
    this.setData({
      _area_level: 3, //总共有几级地址
      _area_selectAllArea: true, //是否要求用户选到最后一级 
      _area_showSelector: false, //是否展示控件
      _area_activeTab: 0, //激活的选项卡
      _area_checkedIndexArr: [], //选中的地址下标
      _area_areaList: [provinces, null, null], //省市区街道二维数组
    })
  },
  _area_selectAreaItem(e) {
    let level = parseInt(e.currentTarget.dataset.level);
    let index = parseInt(e.currentTarget.dataset.index);
    let regionId = e.currentTarget.dataset.value;
    let newCheckedIndexArr = this.data._area_checkedIndexArr;
    let newAreaList = this.data._area_areaList;
    newCheckedIndexArr[level] = index;
    switch (level) {
      case 0:
        newCheckedIndexArr[1] = null;
        newCheckedIndexArr[2] = null;
        newAreaList[1] = null;
        newAreaList[2] = null;
        break;
      case 1:
        newCheckedIndexArr[2] = null;
        newAreaList[2] = null;
        break;
    }
    this.setData({
      _area_checkedIndexArr: newCheckedIndexArr,
      _area_areaList: newAreaList
    });
    if (level < this.data._area_level - 1) {
      //加载下一页地址选择数据
      this._area_loadArea(level + 1, regionId);
    } else {
      //选择完成
      this._area_commitArea();
    }
  },
  _area_reselectArea(e) {
    let level = parseInt(e.target.dataset.level);
    this.setData({
      _area_activeTab: level
    });
  },
  _area_loadArea(level, areaId) {
    utils.showLoading();
    this.provincesinit(level + 1, areaId, level)
    return;
    // var { _area_activeTab,_area_areaList}= this.data;
    // var getParampArr = getParamp[provnameArr[level]]||[];
    // _area_areaList[level]=[];
    // getParampArr.map((item)=>{
    //   if (item.pvalue == areaId){
    //     _area_areaList[level].push({...item})
    //   }
    // })
    // _area_areaList[level].length == 0 ? _area_areaList[level] = null : _area_areaList[level];
    // _area_activeTab = (_area_areaList[level] || []).length == 0 ? _area_activeTab : level;
    // (_area_areaList[level] || []).length == 0&&this._area_commitArea();
    // this.setData({
    //   _area_areaList,
    // },()=>{
    //   this.setData({
    //     _area_activeTab
    //   })
    // })
  },
  _area_areaSwipe(e) {
    let level = parseInt(e.detail.current);
    this.setData({
      _area_activeTab: level
    });
  },
  _area_commitArea() {
    let locationList = [];
    for (let i in this.data._area_checkedIndexArr) {
      let index = this.data._area_checkedIndexArr[i];
      if (index !== null) {
        let locationItem = {
          value: this.data._area_areaList[i][index].regionId,
          text: this.data._area_areaList[i][index].regionName,
        };
        locationList.push(locationItem);
      } else {
        break;
      }
    }
    if (this.onAreaCommit) {
      this.onAreaCommit(locationList);
    } else {
      console.warn('页面缺少 onAreaCommit(locationList) 回调函数');
    }
    this.setData({
      _area_showSelector: false, //是否展示控件
    })
    //this._area_init();//选择完成 重置选择器
  }

};